﻿#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//int add(int x, int y) {
//	return x + y;
//}
//int sub(int x, int y) {
//	return x - y;
//}
//int mul(int x, int y) {
//	return x *y;
//}
//int div(int x, int y) {
//	return x / y;
//}
//
//int main()
//{
//	int n = 0;
//	int(*p[5])(int, int) = {0,add,sub,mul,div};
//	scanf("%d", &n);
//	do {
//		if (n <= 4 && n >= 1) {
//			int x = 0, y = 0;
//			scanf("%d %d", &x, &y);
//			p[n](x, y);
//		}
//		else if (n == 0)
//			printf("退出成功");
//		else
//			printf("请重新输入");
//
//	} while (n);
//
//
//		return 0;
//
//}
//qsort-排序整数

//int qin(const void* p1, const void* p2) {
//	return  (*(int*)p1 - *(int*)p2);
//}
//int main() {
//	int arr[] = { 2,4,3,1,5,8,6,9,0,7 };
//	int zs = sizeof(arr) / sizeof(arr[0]);
//	int  si = sizeof(arr[0]);
//	qsort(arr, zs, si, qin);
//	for (int i = 0; i < zs; i++)
//		printf("%d ", arr[i]);
//}

//qsort-排序结构体

//struct su {
//	
//	char arr[20];
//	int n;
//};
//
//int qin(const void* p1, const void* p2) {
//	return  strcmp(((struct su*)p2)->arr, ((struct su*)p1)->arr);
//}
//int main() {
//	struct su s[] = { {"zhangsan",18}, {"lisi",17}, {"wanwu",56} };
//	int zs = sizeof(s) / sizeof(s[0]);
//	int x = sizeof(s[0]);
//	qsort(s, zs, x, qin);
//	for (int i = 0; i < zs; i++){
//				printf("%s ", s[i].arr);
//		}
//	return 0;
//}
//qsort-排序浮点型

//int qin(void* p1, void* p2) {
//	return (*(double*)p1 - *(double*)p2);
//}
//
//int  main() {
//	double arr[] = { 1.2,9.9,6.7,7.8,4.6 };
//	int zs = sizeof(arr) / sizeof(arr[0]);
//		int x = sizeof(arr[0]);
//		qsort(arr, zs, x, qin);
//
//		for (int i = 0; i < zs; i++) {
//		printf("%.2lf  ", arr[i]);
//					}
//	return 0;
//}
//找单身狗2
//void* qin(const void* p1, const void* p2) {
//	return  (*(int*)p1 - *(int*)p2);
//}
//int main() {
//	int j = 0;
//	int* p = (int*)malloc(3 * sizeof(int)); 
//		int arr[] = {1,2,3,4,5,1,2,3,4,6};//1123344556
//	int zs = sizeof(arr) / sizeof(arr[0]);
//		int x = sizeof(arr[0]);
//		qsort(arr, zs, x, qin);
//		for (int i = 0; i < zs; i++)
//				printf("%d ", arr[i]);
//		printf("\n");
//		for (int i = 0; i < zs; i++) {
//			if (arr[i] != arr[i + 1]) {
//				p[j++] = arr[i];
//				if (i == zs - 2)
//					p[j] = arr[i + 1];
//			}
//			else if (i == zs - 1)
//				p[j] = arr[i];
//			else 
//				i++;
//}
//		for (int i = 0; i < 2; i++) {
//			printf("%d ", p[i]);
//}
//		free(p);
//		p = NULL;
//
//	return 0;
//}
// 异或
//void findTwoNum(int arr[], int n, int* pnum1, int* pnum2)
//{
//	int i;
//	int sum = 0;
//	​
//		for (i = 0; i < 9; i++)
//		{
//			sum ^= arr[i];
//		} //先找到两个数互相异或的结果
//	​
//		int pos;
//	for (i = 0; i < 32; i++)
//	{
//		if (sum & 1 << i)
//		{
//			pos = i;
//			break;
//		}
//	} //再找到有分歧的一位。在这一位上，两个数一定是一个1一个0
//	​
//		* pnum1 = *pnum2 = 0;
//	for (i = 0; i < 10; i++)
//	{
//		if (arr[i] & 1 << pos)
//		{
//			*pnum1 ^= arr[i]; //这一位是1的，放在数1里
//		}
//		else
//		{
//			*pnum2 ^= arr[i]; //这一位是0的，放在数2里
//		}
//	}
//}
//
//

